package com.ebupt.migu.music.label.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.ebupt.migu.globalpopup.entity.ConditionRelation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @description: TODO
 * @author: liuyangyang@ebupt.com
 * @date: 2021/8/13 15:52
 */
@Mapper
@DS("mysql_mg")
public interface LabelCustomerMapper {

    /**
     * 判定当前客群是否需要将结果集导入redis
     *
     * @return
     */
    boolean dynamicOnly(Map<String, String> map);

    /**
     * 查询is_dynamic_customer 和 is_static_customer的值
     *
     * @param map
     * @return
     */
    Map<String, String> dynamicAndStaticStatus(Map<String, String> map);

    /**
     * 更新客群
     *
     * @param map
     */
    public void updateUserGroupInfo(HashMap<String, String> map);

    /**
     * 查询动态规则客群信息
     *
     * @return
     */
    public Map<String, Object> dynamicCustomerInfo(Map<String, String> map);

    /**
     * 查询客群的静态标签规则
     *
     * @return
     */
    public Map<String, Object> staticLabelInfo(Map<String, String> map);

    /**
     * 创建详情
     *
     * @param map
     */
    public void createStaticCustomerInfo(HashMap<String, String> map);

    /**
     * 查询客群是否存在
     *
     * @param map
     * @return
     */
    public boolean isCustomerExist(HashMap<String, String> map);

    /**
     * 更新客群信息
     *
     * @param map
     */
    public void updateStaticCustomerInfo(HashMap<String, String> map);

    /**
     * 更新是否上传成功的标识：
     * 0-否；1-是；
     *
     * @param map
     */
    public void updateDynamicCustomerInfo(Map<String, String> map);

    /**
     * 重组客群
     *
     * @param map
     * @return
     */
    public Map<String, Object> recombineCustomerMasterInfo(Map<String, Object> map);

    /**
     * 子客群
     *
     * @param map
     * @return
     */
    public Map<String, Object> recombineCustomerSlaveInfo(Map<String, Object> map);

    /**
     * 将上传状态更新至已完成
     *
     * @param map
     */
    void updateRecombineCustomerMasterInfo(Map<String, Object> map);

    /**
     * 通过客群ID查询变色龙动态人群是否正在使用
     *
     * @param groupId 客群Id
     * @return 动态人群条件配置单
     */
    List<ConditionRelation> queryByGroupId(@Param("groupId") String groupId);

    /**
     * 通过活动id查询审核人
     *
     * @param activityId 活动id
     * @return 审核人
     */
    String queryApproveName(@Param("activityId") String activityId);
}
